#ifndef OBJECT_MANAGER_H
#define OBJECT_MANAGER_H

#include <vector>
using std::vector;

class BaseInterface;

class ObjectManager
{
public:
	// Singleton Access
	static ObjectManager* GetInstance()
	{
		static ObjectManager instance;
		return &instance;
	}

	/* DYNAMIC OBJECTS */
	bool AddObject(BaseInterface* _object);
	void UpdateObjects(float _dT);
	void RenderObjects();
	bool RemoveObject(BaseInterface* _object);
	void RemoveAllObjects();

	/* STATIC OBJECTS */
	bool AddStaticObject(BaseInterface* _object);
	bool RemoveStaticObject(BaseInterface* _object);
	void RemoveAllStaticObjects();

	/* COLLISIONS */
	void CheckCollision();
	void CheckActive();

	void ShutDownObjectManager();

private:
	ObjectManager() {}
	~ObjectManager() {}
	ObjectManager(const ObjectManager&);
	ObjectManager& operator=(const ObjectManager&);

	std::vector<BaseInterface*> objectVec;
	std::vector<BaseInterface*> staticObjectVec;

};

#endif	// OBJECT_MANAGER_H